package cc.rengu.igas.channel.wechat.facade;


import cc.rengu.igas.channel.wechat.facade.request.*;
import cc.rengu.igas.channel.wechat.facade.response.*;
import cc.rengu.igas.channel.wechat.facade.result.Result;

/**
 * 微信支付公众服务组件
 */
public interface WechatPubService {

    /**
     * 获取用户授权
     *
     * @param getAuthCodeRequest
     * @return WechatGetAuthCodeResponse 用户授权响应
     * @throws Exception
     */
    Result<WechatGetAuthCodeResponse> getAuthCode(WechatGetAuthCodeRequest getAuthCodeRequest);

    /**
     * 获取用户openId
     *
     * @param getOpenIdRequest
     * @return 获取用户openId响应
     * @throws Exception
     */
    Result<WechatGetOpenIdResponse> getOpenId(WechatGetOpenIdRequest getOpenIdRequest);


    /**
     * 上传图片
     *
     * @param uploadImageRequest
     * @return 图片上传应答WechatUploadImageResponse
     * @throws Exception
     */
    Result<WechatUploadImageResponse> uploadImage(WechatUploadImageRequest uploadImageRequest);

    /**
     * 网联idc查询
     *
     * @param idcQueryRequest idc查询请求
     * @return idc列表
     */
    Result<NuccIdcQueryResponse> idcQuery(NuccIdcQueryRequest idcQueryRequest);

    /**
     * 获取ticket
     *
     * @param getJsapiTicketRequest
     * @return
     */
    Result<GetJsapiTicketResponse> getJsapiTicket(GetJsapiTicketRequest getJsapiTicketRequest);
}
